#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
/*
题目描述：
给定迷宫的规模 n.m 
障碍物个数 t
起点位置sx,sy
终点位置 fx，fy
障碍物的位置
计算从起点到终点的方案总数
*/
const int maxs = 20;
struct position
{
    int x,y;
};
int n,m,t;
position s,f,T; //起点，终点， 障碍物点
int a[maxs][maxs]; //地图
int b[maxs][maxs];  //用来标记 经过一次标记为1 表示之后不能再经过
int dx[4] = {0,0,1,-1};
int dy[5] = {-1,1,0,0};
int total;  //记录方案总数

void dfs(int x, int y)
{
    if(x == f.x && y == f.y)
    {
        total++;
        return;
    }
    else
    {
        for(int i=0;i<=3;i++) //0-3 左右上下 每个点进行上下左右的试探
        {
            if(b[x+dx[i]][y+dy[i]]==0 && a[x+dx[i]][y+dy[i]]==1) //没有访问，且没有障碍物，可以访问
            {
                b[x][y] = 1;  //标记已经访问过
                dfs(x+dx[i],y+dy[i]);  //探索下一个点 //递d
                b[x][y] = 0;  //清除标记，进行下一个点的试探
            }
        }
    }
}



int main()
{
    memset(b,0,sizeof(b)); //为0说明都没有访问
    cin >> n >> m >> t;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            a[i][j] = 1;
    cin >> s.x >> s.y >> f.x >> f.y;
    for(int i=1;i<=t;i++)
    {
        cin >> T.x >> T.y;
        a[T.x][T.y] = 0;  //表明为障碍物不能访问
    }

    dfs(s.x,s.y);
    cout << total;
    return 0;
}